import axios from 'axios'
import store from '@/common/vuex.js'
import {APP_ID, platform, SERVICE_URL, isMock} from './config'
import vue from "@/main.js"

// axios.defaults.headers['Content-Type'] = 'application/json';

// 请求拦截
axios.interceptors.request.use((config) => {
    //添加token
    // config.headers.YQToken = store.state.token;
    // config.headers.AppId = APP_ID;
    // console.log('axios')
    // console.log(config.data)
    if (config.data) {
        if (!config.data.deptId) {
            config.data.deptId = store.state.user.departmentid
        }
        if (!config.data.nlevel) {
            config.data.nlevel = store.state.user.nlevel
        }
    } else {
        config.data = {deptId: store.state.user.departmentid, nlevel: store.state.user.nlevel}
    }
    //拼接服务器地址
    if (!(/\/mock/.test(config.url))) { //非mock开头
        if (isMock) {
            if (!(/http/.test(config.url))) {  //非http开头
                config.url = SERVICE_URL + platform + config.url;
                config.headers['Content-Type'] = 'text/plain';
            }

        } else {
            config.url = '/mock' + config.url
        }
    }
    return config;
}, (error) => {
    // 请求错误公共方法
    return Promise.reject(error);
});

// 相应拦截
axios.interceptors.response.use((res) => {
    // console.log("res");
    // console.log(res);
    // const resData = resData;
    // /**
    //  * 成功拦截
    //  * */
    // if (resData.isError) {
    //     // 未登录
    //     if (resData.code === 40000 || resData.code === 40001
    //         || resData.code === 40002 || resData.code === 40003
    //         || resData.code === 40005 || resData.code === 40006
    //         || resData.code === 40008
    //     ) {
    //         toast.error(resData.msg?resData.msg:"未登录");
    //         vue.$router.push("/login");
    //
    //     } else {
    //         return resData;
    //     }
    // }else{
    //     return resData;
    // }
    return res.data;
}, (error) => {
    /**
     * 错误拦截
     * */
    const resp = error.response;
    console.log(error);
    console.log(resp);
    // console.log(error.message);
    // console.log(error.response);
    if (resp.status == 401) {
        vue.$message.error("登录验证失败，请重新登录");
        vue.$router.push("/login");
    } else if (resp.status == 500) {
        console.log(resp.data.message);
        vue.$message.error("服务器错误，请联系系统开发人员！");
    }
    // vue.$message.error(error.message)
    // if (error.code === 'ECONNABORTED') {
    //     toast.error("请求超时")
    // } else if (error.response && error.response.data) {
    //     toast.error(error.response.data)
    // } else if (error.message) {
    //     toast.error(error.message)
    // }
    return Promise.reject(resp.data);
});
//
// store.subscribe((data)=>{
//     // console.log("store.subscribe((data)");
//     // console.log(data);
//     // console.log(store.state)
// });
export default axios;
